﻿using NHibernate;
using NHibernate.Criterion;
using System.Collections.Generic;
using br.com.portocs.unidaacademico.dominio;

namespace br.com.portocs.unidaacademico.repositorio
{
    public class RepositorioCursos : RepositorioBase<Curso>
    {
        public IList<Curso> RecuperaPorDescricao(string descricao)
        {
            var cursosPorDescricao = Session.CreateCriteria<Curso>()
                .Add(Restrictions.Like("Descricao", descricao))
                .List<Curso>();

            return cursosPorDescricao;
        }
        
        #region OfertaCurso
        /// <summary>
        /// Método que recupera todas as ofertas de determinado Curso
        /// </summary>
        /// <param name="idCurso">Id do Curso</param>
        /// <returns></returns>
        public IList<OfertaCurso> RecuperaOfertasPorCurso(long idCurso)
        {
            var ofertasPorCurso = Session.CreateCriteria<OfertaCurso>()
                .Add(Restrictions.Eq("Curso.Id", idCurso))
                .List<OfertaCurso>();

            return ofertasPorCurso;
        }

        /// <summary>
        /// Método que recupera todas as ofertas de determinado Curso
        /// </summary>
        /// <param name="curso">Objeto Curso instanciado</param>
        /// <returns></returns>
        public IList<OfertaCurso> RecuperaOfertasPorCurso(Curso curso)
        {
            return RecuperaOfertasPorCurso(curso.Id);
        } 
        #endregion

        
    }
}
